1. Field of the Invention
The invention relates to the field of computer software, and component-based computer software for devices in particular.
2. Art Background
Recent developments in technology have made it possible for consumer appliances, such as televisions, VCRs, and stereos, to communicate intelligently with computer devices, such as personal computers. Consumer appliances with this capability are sometimes called "smart devices" because of their ability to intelligently respond to commands and queries from the computer. The Consumer Electronic Bus (CEBus) technology standard IS-60/EIA-600, from the Electronics Industry Association, is an example of such a "smart device" technology.
Another technological development which is gaining in popularity is "component based software". A software component is a sequence of computer instructions implementing one or more categories of software functionality. Software components may be combined in a modular fashion to create more complicated programs. For example, a software component implementing a spell-checking category may be combined with a software component implementing a text-formatting category, to create a simple word processor program.
Software components should be able to `advertise` the categories which they implement in some way, so that it is possible to know if they are useful to utilize in particular programs. Software components should also be able to advertise the software categories which must be present in other programs in order for them to carry out their functions properly. For example, the text-formatting component previously described may require a word-wrap category in order to format the text properly. This word-wrap category must be provided by the program which utilizes the text-formatting component in order for the text-formatting component to work properly.
It would be desirable to merge the technology of smart devices with the technology of component software to increase the ease and flexibility of creating programs to control smart devices when connected to personal computers. For example, the maker of a `smart` television could create a software component which enables users to control and interact with the television by way of computers. Third party software providers could write programs which discover and utilize the television vendor's component automatically.
More generally, the television could be controlled by way of a generic television control program. Particular television models could then provide specific software components to control the models, these components being discovered and utilized by the generic television control program.
As computer users become more mobile, the probability of a device being connected and disconnected from the computer system increases. A laptop computer is an example of a portable device that is frequently connected and disconnected from different devices. At the office, the laptop computer may be connected to office equipment such as printers, networks, and faxes. At home, the laptop computer may be connected to televisions, modems, and stereos. The problem then arises; how can the capabilities of a smart device be detected when the device is connected to the computer for the first time, and how can the same device be later identified when it is disconnected and reinstalled a second time? It is also desirable to provide notification to software sequences on the computer system when devices associated with those sequences are connected. Referring to the television example presented above, the generic program for controlling televisions would desire notification when particular smart television models were connected to the computer system, so that the model-specific software component could be discovered and utilized by the generic television control program.
The features supported by a smart device are called device functions. To understand the difference between software categories and device functions, consider again the television example set forth above. The television has certain device functions, such as a tuner and a volume control. On the software side, a software component implements the `television category`, which consists of sequences of instructions to control the television tuner and volume control.
The Microsoft.TM. Corporation has defined a way for software components to advertise their implemented and required categories. A software component advertises its implemented categories using a data tree structure called the Registry. It also advertises in the Registry the software categories required for the component to perform its functions properly (refer back to the text-formatting component example).
The component advertises its implemented and required categories in the Registry using the tree structure of FIG. 1. FIG. 1 shows a computer-readable media, such as a hard drive or memory, storing a prior art data tree for identifying the implemented and required software categories for a software component. The media 120 is comprised of a data tree consisting of component nodes 102, 104, each component node having child nodes comprising an implemented categories node 106, 110, and a required categories node 108, 112. Each component node 102, 104 also comprises a TREAT AS node which identifies the default component to use for a particular software category. The implemented category nodes 106, 110 have a child node for each software category implemented by the component. Likewise, the required category nodes 108, 112 have a child node for each software category required by the component. By traversing the data tree on the media, a sequence of instructions executing on the computer processor can determine exactly which categories are implemented and required by any software component with an entry in the tree. The TREAT AS node identifies a component as the default component to use when a certain software category is required by a program.
The Microsoft data tree does not provide a way for associating smart devices with particular software components, device functions, or software categories. Nor does the Microsoft data tree provide a way of associating device functions with software categories, or for notifying software components when a device is connected to the computer system. It is therefore desirable to implement a computer readable media comprising data and sequences of instructions, said instructions which, when executed by the processor on a computer system, operate on the stored data to allow a device to be associated with software components, software categories, and device functions, and at the same time allow for associating device functions with software categories and providing for the notification of software sequences when a device is connected to the computer system.